package com.yuju.roomStatus.service;

import com.yuju.roomStatus.model.RoomTypeStatusModel;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 
 * 类名：IRoomTypeStatusService  <br />
 *
 * 功能：房型状态
 *
 * @author : jiangp <br />
 * @Date : 2017年12月13日 下午6:13:07  <br />
 * @version : 1.1 <br />
 */
public interface IRoomTypeStatusService {
	/**
	 * 
	 * 功能：获取可预订房间数、价格、早餐数。<br/>
	 *
	 * @author jiangp
	 * @Date 2017年12月13日 下午6:12:58 <br/>
	 */
    List<RoomTypeStatusModel> getReserveNum(RoomTypeStatusModel roomTypeReserveModel);

    /**
     * 
     * 功能：根据入住类型，入住标准和价格方案获得价格。<br/>
     *
     * @author jiangp
     * @Date 2017年12月13日 下午6:13:02 <br/>
     */
    List<RoomTypeStatusModel> getRoomTypePrice(RoomTypeStatusModel roomTypeReserveModel);

    /**
     * 
     * 功能：根据价格方案获得价格和早餐数<br/>
     *
     * @author jiangp
     * @Date 2017年12月15日 下午3:16:58 <br/>
     */
    List<RoomTypeStatusModel> getPirceBySchemeId(RoomTypeStatusModel roomTypeStatusModel);
	
	/**
	 * 
	 * 功能：获得可预订房间数量：可预订房间数=非占用房间+可超订-预订房间数<br/>
	 *
	 * @author jiangp
	 * @Date 2017年12月16日 上午9:43:52 <br/>
	 */
	List<RoomTypeStatusModel> getReserveCount(RoomTypeStatusModel roomTypeStatusModel);

	/**
	 * 
	 * 功能：根据房型验证房间数是否够预订。
	 * 输入参数必须包含roomTypeId和reserveVerifyCount。
	 * 输出参数包含验证每个房型的reserveVerifyStatus。<br/>
	 *
	 * @author jiangp
	 * @Date 2017年12月16日 上午9:45:03 <br/>
	 */
	List<RoomTypeStatusModel> verifyReserveRoomType(List<RoomTypeStatusModel> roomTypeStatusModelList,
													String hotelId, Date checkinTime, Date checkoutTime);

	/**
	 * 
	 * 功能：根据开始和结束日期，月租金获得公寓房的总价、日均价<br/>
	 *
	 * @author jiangp
	 * @Date 2017年12月23日 上午9:52:45 <br/>
	 */
	RoomTypeStatusModel getApartPrice(Date startday, Date endday, BigDecimal monthPrice);
}
